/*
 * ButtonList.h
 *
 *  Created on: 15.05.2009
 *      Author: h3llfire
 */

#ifndef BUTTONLIST_H_
#define BUTTONLIST_H_

#include "../../core/database/DBModule.h"

namespace Impp {

class ButtonDefination{
public:
	int id;
	wxString title;
	wxString description;

	ButtonDefination(int id, const wxString & title, const wxString & description);
	virtual ~ButtonDefination(){};
};


class ActionButtonDefination : public ButtonDefination{
public:
	wxString moduleName;
	wxString actionName;

	ActionButtonDefination(int id, const wxString & title, const wxString & description, const wxString & moduleName, const wxString & actionName);
	virtual ~ActionButtonDefination(){};
};

class CheckSettingButtonDefination : public ButtonDefination{
public:
	DBModule module;
	wxString settingName;

	CheckSettingButtonDefination(int id, const wxString & title, const wxString & description, const DBModule module, const wxString & settingName);
	virtual ~CheckSettingButtonDefination(){};
};


class ButtonList{
	std::vector<ButtonDefination*> buttons;
	int nextId;

public:
	ButtonList(int firstId);
	~ButtonList();

	void addActionButton(const wxString & moduleName, const wxString & actionName, const wxString & title, const wxString & description);
	void addCheckSettingButton(DBModule & dbModule, const wxString & settingName, const wxString & title, const wxString & description);

	std::vector<ButtonDefination*> getButtons();
};

}

#endif /* BUTTONLIST_H_ */
